package com.candy.test;

import com.candy.bean.UserInfo;
import com.candy.dao.UserInfoMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class DBDriver {
    public static void main(String[] args) {
        String resource = "mybatis-config.xml";
        try {
//            读取mybatis-config的配置文件
            InputStream inputStream = Resources.getResourceAsStream(resource);
//            通过配置文件创建SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//            由SqlSessionFactory获取SqlSession(用来执行具体的sql语句的类)
            try (SqlSession session = sqlSessionFactory.openSession()) {
//               方式一： 调用方法selectOne获取数据,参数中第一个参数是由mapper 中的namaspace和id组成,第二个参数是需要传进去的参数
//                  此种方式不推荐使用
//               UserInfo userInfo= session.selectOne("com.candy.dao.UserInfoMapper.selectUserInfoById", 1);
//     方式二：使用和指定语句的参数和返回值相匹配的接口（比如 BlogMapper.class），
//     现在你的代码不仅更清晰，更加类型安全，还不用担心可能出错的字符串字面值以及强制类型转换。
//                推荐使用第二种方式进行操作
                UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
               UserInfo userInfo= mapper.selectUserInfoById(3);
                System.out.println(userInfo);
                System.out.println("=======================================");
                 List<UserInfo> lsuser= mapper.getUserInfoes();
                for (UserInfo user:lsuser
                     ) {
                    System.out.println(user);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}
